package com.kaishengit.service;
import java.util.List;

import com.kaishengit.dao.FileDao;
import com.kaishengit.dao.FilesDao;
import com.kaishengit.dao.MessageDao;
import com.kaishengit.entity.Message;
import com.kaishengit.entity.MyFile;
import com.kaishengit.entity.Files;
import com.kaishengit.entity.User;
import com.kaishengit.util.DateUtil;
import com.kaishengit.util.PKutil;
import com.kaishengit.util.Page;

public class FileService {
	private FilesDao dao = new FilesDao();
	private FileDao fdao = new FileDao();
	private MessageDao mdao=new MessageDao();
	/**
	 * 根据用户所参与的项目，查找所有的相关文件夹
	 * @param projectid
	 * @param pageNum
	 * @return
	 */
	public Page<Files> findAllFiles(String projectid, String pageNum){
		int p =0;
		if(pageNum == null ){
			p=1;	
		}else{
			p = Integer.valueOf(pageNum);
		}
		long totalCount = dao.getCount(projectid);
		Page<Files> page = new Page<Files>();
		page.setPageNum(p);
		page.setPageSize(8);
		page.setTotalCount(totalCount);
		return dao.findAllFiles(projectid,page);
	}
	
	
	
	public String saveFiles(String name, User user, String id) {
		Files files = new Files();
		files.setFilesname(name);
		String filesid = PKutil.getPk();
		String creatime = DateUtil.getNow();
		files.setCreatime(creatime);
		files.setId(filesid);
		files.setProjectid(id);
		files.setUserid(user.getId());
		dao.saveFiles(files);
		return filesid;
	}
	
	/**
	 * 查找文件夹下的所有的文件
	 * @param id
	 * @param p 
	 */

	public Page<MyFile> findAllFileByFilesId(String id, String pageNum) {
		int p =0;
		if(pageNum == null ){
			p=1;	
		}else{
			p = Integer.valueOf(pageNum);
		}
		Page<MyFile> page = new Page<MyFile>();
		page.setPageNum(p);
		page.setPageSize(8);
		return fdao.findAllFIleByFilesId(id,page);
		
	}

	/**
	 * 根据文件在磁盘中的名字获取这个文件，目的在于获取这个文件的name,为了下载时能显示name.xxx形式
	 * @param trueName
	 * @return
	 */

	public MyFile findFileByTrueName(String trueName) {
		return fdao.findFileByTrueName(trueName);
	}



	public void uploadFile(User user) {
		// TODO Auto-generated method stub
		
	}



	public void save(MyFile file,String projectid) {
		fdao.save(file);
		
		/**
		 * 将所共享的文件保存进message表中
		 * */
		Message m=new Message();
		String mid=PKutil.getPk();
		String mtime=DateUtil.getNow();
		m.setId(mid);
		m.setDate(mtime);
		m.setMyfileid(file.getId());
		m.setUserid(file.getUserId());
		m.setProjectid(projectid);
		m.setName(file.getName().substring(0,file.getName().indexOf(".")));
		m.setType("file");
		mdao.saveFile(m);
	}



	public void del(String id) {
		fdao.del(id);
		
	}



	public Files findFilesById(String id) {
		return dao.findById(id);
		
	}



	public void editName(String id, String name, Files files) {
		 dao.editName(id,name,files);
		
	}



	public void delFiles(String id) {
		List<MyFile> list = fdao.findallFileByFilesId(id);
		for(MyFile f:list){
			mdao.delByFileId(f.getId());
		}
		fdao.delByFilesId(id);
		dao.delById(id);
		
	}
}
